class Solution {
public:
    int minNumberOfFrogs(string croakOfFrogs) {
        string t="croak";       //一声蛙叫
        int n=t.size();
        vector<int> hash(n);   //数组模拟哈希表()

        unordered_map<char,int> index;   //字母下标映射关系
        for(int i=0;i<n;i++)
        {
            index[t[i]]=i;      //c对应0，r:1 o:2 a:3  k:4
        }
        //遍历叫声
        for(auto x:croakOfFrogs)
        {
            //如果是c  看看后面k有没有青蛙已经叫完
            //因为可以一个青蛙可以连续叫
            //1.有，  当前字符c ++   最后字符k  --
            //2.没有，当前字符c ++
            if(x=='c')  //通过下标映射关系看
            {
                if(hash[index['k']]) 
                {
                    hash[index['k']]--;
                }
                hash[index['c']]++;
            }
            else    
            {
                //其他字符 看看前面一个有没有出现
                if(hash[index[x]-1]==0) 
                    return -1;          //没叫完
                hash[index[x]]++;       //对应字符++
                hash[index[x]-1]--;    //前面字符--
            }
        }

        //判断有没有  没叫完的
        for(int i=0;i<n-1;i++)
            if(hash[i]!=0)
                return -1;
        
        return hash[n-1];//最后字符的
    }
};